Known computer systems include a processor for executing program code, a non-volatile memory for storing program code for starting the computer system, and a system monitoring module for monitoring the computer system for the occurrence of a predetermined condition. Server computers, in particular, often have a system monitoring module (also referred to as a Baseboard Management Controller (BMC)) which is used to monitor the correct operation of the computer system being monitored. This makes it possible to rapidly and reliably detect errors in the computer system and thus achieve a high level of reliability of the relevant computer system.
The so-called BIOS (Basic Input Output System) which contains program code for starting the computer system is a particularly critical component of computer systems. If an error occurs during execution of the BIOS program code, the computer system can no longer operate. In addition, such an error cannot be rectified, in particular, by resetting the computer system.
Errors in the BIOS program can arise, inter alia, while the latter is being updated, for example if an updating operation is not successfully completed or a BIOS version which is not suitable for the respective computer system is inadvertently stored. Subsequent starting of the computer system, and thus execution of the defective BIOS program code, generally results in an error which can be rectified only using relatively complicated measures.
For example, it is possible to replace a memory module, which contains the BIOS program code, with another memory module containing the correct BIOS program code. Alternatively, it is also known, during system starting, to provide a user of the computer system with the opportunity to load new program code for starting the computer system, for example using a so-called USB memory stick.
However, both methods are relatively complicated and, in particular, prevent remote maintenance of the computer system. Especially in the case of server computers in which a high level of reliability of the computer system is important and which are often not set up in the immediate reach of a user. Therefore, there is a need for improved computer systems and methods which allow program code for starting the computer system to be updated in a simple and reliable manner. In particular, updating should not require any manual intervention in the computer system and should preferably be able to be carried out remotely.